From: Joan Torres Lopez Date: Tue, 15 Jul 2025 09:27:01 +0000 (+0200) Subject: systemActions: Optionally allow restart/shutdown on lock screen X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~116^2^2~53 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=193b664c7daa2ea7707e8b7fba03afe07e2cbd2a;p=gnome-shell.git systemActions: Optionally allow restart/shutdown on lock screen Support the new 'restart-enabled' setting from 'org.gnome.desktop.screensaver' to optionally allow restart/shutdown from the lock screen. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1584 Part-of: --- diff --git a/js/misc/systemActions.js b/js/misc/systemActions.js index a027a8134..c24d254b4 100644 --- a/js/misc/systemActions.js +++ b/js/misc/systemActions.js @@ -12,10 +12,12 @@ import * as Screenshot from '../ui/screenshot.js'; const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown'; const LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen'; +const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver'; const DISABLE_USER_SWITCH_KEY = 'disable-user-switching'; const DISABLE_LOCK_SCREEN_KEY = 'disable-lock-screen'; const DISABLE_LOG_OUT_KEY = 'disable-log-out'; const DISABLE_RESTART_KEY = 'disable-restart-buttons'; +const RESTART_ENABLED_KEY = 'restart-enabled'; const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out'; const POWER_OFF_ACTION_ID = 'power-off'; @@ -153,6 +155,7 @@ const SystemActions = GObject.registerClass({ this._loginScreenSettings = new Gio.Settings({schema_id: LOGIN_SCREEN_SCHEMA}); this._lockdownSettings = new Gio.Settings({schema_id: LOCKDOWN_SCHEMA}); this._orientationSettings = new Gio.Settings({schema_id: 'org.gnome.settings-daemon.peripherals.touchscreen'}); + this._screenSaverSettings = new Gio.Settings({schema_id: SCREENSAVER_SCHEMA}); this._session = new GnomeSession.SessionManager(); this._loginManager = LoginManager.getLoginManager(); @@ -182,6 +185,9 @@ const SystemActions = GObject.registerClass({ this._lockdownSettings.connect(`changed::${DISABLE_LOG_OUT_KEY}`, () => this._updateHaveShutdown()); + this._screenSaverSettings.connect(`changed::${RESTART_ENABLED_KEY}`, + () => this._updateHaveShutdown()); + this.forceUpdate(); this._orientationSettings.connect('changed::orientation-lock', () => { @@ -347,7 +353,8 @@ const SystemActions = GObject.registerClass({ } _updatePowerOff() { - let disabled = Main.sessionMode.isLocked || + let disabled = (Main.sessionMode.isLocked && + !this._screenSaverSettings.get_boolean(RESTART_ENABLED_KEY)) || (Main.sessionMode.isGreeter && this._loginScreenSettings.get_boolean(DISABLE_RESTART_KEY)); this._actions.get(POWER_OFF_ACTION_ID).available = this._canHavePowerOff && !disabled;